package com.ruoyi.lvlian.domain;

import java.util.Date;
import java.util.Random;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 工作站IOT管理对象 lhs_work_station
 *
 * @author ruoyi
 * @date 2025-08-04
 */
@Data
@ToString
@ApiModel(value = "莱回收商品对象", description = "莱回收商品对象")
public class LhsWorkStation {
    private String id;

    /** 工作站编号 */
    @ApiModelProperty(value = "工作站编号")
    private String code;

    /** 站点名称 */
    @ApiModelProperty(value = "站点名称")
    private String name;

    /** 地址所在 */
    @ApiModelProperty(value = "地址所在")
    private String address;

    /** 录入人 */
    @ApiModelProperty(value = "录入人")
    private String createUser;

    /** 录入日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String createDate;

    /** 工作站管理员 */
    @ApiModelProperty(value = "工作站管理员")
    private String adminName;

    /** 管理员联系方式 */
    @ApiModelProperty(value = "管理员联系方式")
    private String adminPhone;

    /** 区域 */
    @ApiModelProperty(value = "区域")
    private String area;

    /** 平板编号 */
    @ApiModelProperty(value = "平板编号")
    private String padCode;

    /** 平板序列号 */
    @ApiModelProperty(value = "平板序列号")
    private String padSerNum;

    /** 平板厂家 */
    @ApiModelProperty(value = "平板厂家")
    private String padManufacturer;

    /** 平板wifi状态 */
    @ApiModelProperty(value = "平板wifi状态")
    private String padWifiStatus;

    /** 实时定位 */
    @ApiModelProperty(value = "实时定位")
    private String padRealPostion;

    /** 平板蓝牙状态 */
    @ApiModelProperty(value = "平板蓝牙状态")
    private String padBluetoothStatus;

    /** 平板登录密码 */
    @ApiModelProperty(value = "平板登录密码")
    private String padPassword;

    /** 平板mac地址 */
    @ApiModelProperty(value = "平板mac地址")
    private String padMac;

    /** 平板管理人员 */
    @ApiModelProperty(value = "平板管理人员")
    private String padAdminName;

    /** 衡器编号 */
    @ApiModelProperty(value = "衡器编号")
    private String weighWeighNo;

    /** 衡器序列号 */
    @ApiModelProperty(value = "衡器序列号")
    private String weighSerNo;

    /** 衡器类型 */
    @ApiModelProperty(value = "衡器类型")
    private String weighType;

    /** 衡器厂家 */
    @ApiModelProperty(value = "衡器厂家")
    private String weighManufacturer;

    /** 满量程(kg) */
    @ApiModelProperty(value = "满量程(kg)")
    private String weighMaxScale;

    /** 横器尺寸(cm) */
    @ApiModelProperty(value = "横器尺寸(cm)")
    private String weighSize;

    /** 衡器蓝牙状态 */
    @ApiModelProperty(value = "衡器蓝牙状态")
    private String weighBluetoothStatus;

    /** 分度值(kg) */
    @ApiModelProperty(value = "分度值(kg)")
    private String weighScaleValue;

    /** 衡器厂家联系方式 */
    @ApiModelProperty(value = "衡器厂家联系方式")
    private String weighPhone;

    /** 车辆管理人员 */
    @ApiModelProperty(value = "车辆管理人员")
    private String tricycleDriverName;

    /** 车牌号码 */
    @ApiModelProperty(value = "车牌号码")
    private String tricyclePlateNo;

    /** 车辆类型 */
    @ApiModelProperty(value = "车辆类型")
    private String tricycleType;

    /** 车辆厂家 */
    @ApiModelProperty(value = "车辆厂家")
    private String tricycleManufacturer;

    /** 车辆序列号 */
    @ApiModelProperty(value = "车辆序列号")
    private String tricycleSerNo;

    /** 车辆厂家联系方式 */
    @ApiModelProperty(value = "车辆厂家联系方式")
    private String tricyclePhone;

    /** 实时GPS位置 */
    @ApiModelProperty(value = "实时GPS位置")
    private String tricycleGps;

    /** 关联定位器名称 */
    @ApiModelProperty(value = "关联定位器名称")
    private String tricycleGpsName;

    /** 满载重量 */
    @ApiModelProperty(value = "满载重量")
    private String tricycleMaxScale;

    /** 车辆状态 */
    @ApiModelProperty(value = "车辆状态")
    private String tricycleStatus;

    /** 定位器名称 */
    @ApiModelProperty(value = "定位器名称")
    private String locatorName;

    /** 定位器编号 */
    @ApiModelProperty(value = "定位器编号")
    private String locatorCode;

    /** 定位器序列号 */
    @ApiModelProperty(value = "定位器序列号")
    private String locatorSerNo;

    /** 定位器厂家联系方式 */
    @ApiModelProperty(value = "定位器厂家联系方式")
    private String locatorPhone;

    /** 定位器状态 */
    @ApiModelProperty(value = "定位器状态")
    private String locatorStatus;

    /** pad上显示的人员名字 */
    @ApiModelProperty(value = "pad上显示的人员名字")
    private String userName;

    /** pad上显示的人员手机号 */
    @ApiModelProperty(value = "pad上显示的人员手机号")
    private String userPhone;

    /** pad上显示的用户id */
    @ApiModelProperty(value = "pad上显示的用户id")
    private String userId;

    /** 继电器名字 */
    @ApiModelProperty(value = "继电器名字")
    private String relayName;

    /** 继电器代码 */
    @ApiModelProperty(value = "继电器代码")
    private String relayCode;

    /** 继电器状态 */
    @ApiModelProperty(value = "继电器状态")
    private String relayStatus;
    @ApiModelProperty(value = "商户号")
    private String merchantId;  // 商户号

    @ApiModelProperty(value = "商户名称")
    private String merchantName; // 商户名称

    public String getMerchantId() {
        if(StringUtils.isNotEmpty(userPhone)) {
            // 移除手机号中可能存在的空格、横线等字符
            String cleanedPhone = userPhone.replaceAll("[^0-9]", "");

            // 验证手机号长度至少为6位
            if(cleanedPhone.length() >= 6) {
                merchantId = cleanedPhone.substring(cleanedPhone.length() - 6);
            } else {
                // 处理手机号长度不足的情况
                merchantId = String.format("%06d", new Random().nextInt(1000000));
                // 或者使用其他默认值生成策略
            }
        } else {
            // 处理手机号为null或空字符串的情况
            merchantId = generateDefaultMerchantId();
        }

        return merchantId;
    }
    private String generateDefaultMerchantId() {
        // 这里可以使用随机数或其他策略生成默认ID
        return String.format("%06d", new Random().nextInt(1000000));
    }
}
